package com.atnjupt.test;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

/**
 * @author Wizarder
 * @create 2021-05-21 17:21
 */
public class Dom4j {
    @Test
    public void test()  {
        try {
            // 要创建一个 Document 对象，需要我们先创建一个 SAXReader 对象
            SAXReader reader = new SAXReader();
            Document document = reader.read("xml/books.xml");
            System.out.println(document);
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void test1() throws DocumentException {
        //需要分四步操作:
         // 第一步，通过创建 SAXReader 对象。来读取 xml 文件，获取 Docume nt 对象
        SAXReader reader = new SAXReader();
        Document document = reader.read("xml//books.xml");
        // 第二步，通过 Document 对象。拿到 XML 的根元素对象
        Element rootElement = document.getRootElement();
        // 打印测试
        // Element.asXML() 它将当前元素转换成为 String 对象
//        System.out.println(rootElement.asXML());
        // 第三步，通过根元素对象。获取所有的 book 标签对象
        // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
//        Element book = rootElement.element("book");
//        System.out.println(book.asXML());//辟邪剑谱
//        Element book1 = rootElement.element("book");
//        System.out.println(book1.asXML());//葵花宝典 顺序获取
        List<Element> elements = rootElement.elements();
        for(Element book:elements){
            // 第四小，遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素，再通过 getText() 方法拿到
            // 测试
//            System.out.println(book.asXML());
            // 拿到 book 下面的 name 元素对
            Element name = book.element("name");
            String nameText = name.getText();
//            System.out.println(nametext);
            Element price = book.element("price");
            String priceText = price.getText();
//            System.out.println(priceText);
            Element author = book.element("author");
            String authorText = author.getText();
//            System.out.println(authorText);
            //获取Book的属性
            String sn = book.attributeValue("sn");
            System.out.println(new Book(nameText,sn,Double.parseDouble(priceText),authorText));
        }




    }
}
